package com.example.academic_affairs_system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.academic_affairs_system.common.RPage;
import com.example.academic_affairs_system.model.dto.classStudent.ClassStudentPageDTO;
import com.example.academic_affairs_system.model.entity.AasClassStudent;
import com.example.academic_affairs_system.model.vo.classStudent.ClassStudentVO;

import java.util.List;

/**
 * 服务类
 *
 * @author hjx
 * @since 2023-01-31
 */
public interface IAasClassStudentService extends IService<AasClassStudent> {
  /**
   * 根据学生的用户 id 获取班级 id
   *
   * @param userId 用户 id
   * @return {@link Long} 班级 id
   */
  long getClassIdByStudentId(long userId);
  /**
   * 根据学生的用户 id 获取班级学生信息
   *
   * @param userId 用户 id
   * @return {@link AasClassStudent} 班级学生信息
   */
  AasClassStudent getClassStudentByStudentId(long userId);

  /**
   * 根据班级的 id 获取班级的学生
   *
   * @param classId 班级 id
   * @return {@link List} 班级学生的列表
   */
  List<AasClassStudent> getClassStudentByClassId(long classId);
  /**
   * 根据班级的 ids 获取班级的学生
   *
   * @param classIds 班级 id 列表
   * @return {@link List} 班级学生的列表
   */
  List<AasClassStudent> getClassStudentByClassIds(List<Long> classIds);

  /**
   * 根据班级 id 获取班级学生的视图对象
   *
   * @param dto 数据分页
   * @return {@link List} 班级学生视图列表对象
   */
  RPage<ClassStudentVO> getClassStudentVOById(ClassStudentPageDTO dto);
  /**
   * 将学生信息添加至数据库
   *
   * @param classStudent 学生用户信息
   * @return {@link Long}数据 id
   */
  long addStudentToClass(AasClassStudent classStudent);
}
